<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Money_model extends CI_Model {
	
	var $request_params;

	function __construct() {
		parent::__construct();

	}
	
	/**
	 * 그래프 값을 만들어준다.
	 */
	function make_money_data($data, $salary_idx, $annual_salary, $user_age, $max_len) {
		log_message('debug',"#### Money_model::make_unse_data($data, $salary_idx, $annual_salary, $user_age, $max_len)");

		$start_idx = $user_age > 25 ? $user_age-25 : 0;	// 25세 이하이면 25세부터 시작, 25세 이상이면 현재 나이부터 시작
		$end_idx = $user_age < 30+$max_len ? $start_idx+$max_len : 35;	// 30세 이상이면 60세까지만 보여주고, 30세 이하이면 년만 보여준다. array();
		$end_idx = $end_idx < 35 ? $end_idx : 35;	// 60세 제한
		
		$avg_salary = $this->get_salary2011($salary_idx);
		
		// 가중치(%)
		$add_point = $annual_salary / $avg_salary[$user_age];
		
		// 총운 점수
		$score = 0;
		
		$age = $user_age;
		// while ($age <= $end_age) {
		// $seq=결과 배열의 인덱스로 0부터 시작, 
		// $i=운세결과의 배열 값
		log_message('debug',"## user_age=$user_age, age=$age, start_idx=$start_idx, end_idx=$end_idx");
		for ($seq=0, $i = $start_idx; $i <= $end_idx; $i++,$age++,$seq++) { 
			$result_salary[$seq] = $avg_salary[$age] + ($avg_salary[$age] * ($data[$i]['numerical']/20));
			$result_salary[$seq] = (int)($result_salary[$seq]* $add_point);	// 가중치 계산
			
			$score += $data[$i]['numerical'];
			
			$tmp_salary[$seq] = $avg_salary[$age];
			
			log_message('debug',"## i=$i, age=$age #### ".'$result_salary[$seq]='.$result_salary[$seq].'$tmp_salary[$seq]='.$tmp_salary[$seq]);
		}
		
		$result['avg_salary'] = $tmp_salary;
		$result['my_salary']  = $result_salary;
		$result['score'] = $score;
		
		return $result;
	}
	
	/**
	 * 선택한 직업에 해당되는 평균연봉 정보 가져오기
	 */
	function get_salary2011($idx) {
		log_message('debug',"#### Money_model::get_salary2011($idx)");
		
		$query = $this->db->get_where('tb_salary2011', array('idx'=>$idx));
		$result = $query->row_array();

		$this->logsql->log_sql();
		$this->logsql->log_result($result);
		
		return $result;
	}
	
	/**
	 * 직업 종류 리스트 가져오기
	 */
	function select_salary2011_job_list() {
		log_message('debug',"#### Money_model::select_salary2011_job_list()");
		
		$this->db->select('idx, job_type, job');
		$query = $this->db->get('tb_salary2011');
		$result = $query->result_array();

		$this->logsql->log_sql();
		$this->logsql->log_result($result);
		
		return $result;
	}
	
	
	
	
	

	/**
	 * 연도별 금전사주 생성
	 * 운세 데이터DB에서 운세 결과를 가져온다. (
	 * 결과는 JSON
	 */
	function make_unse_data($userinfo, $api_name) {
		log_message('debug',"#### Money_model::make_unse_data($userinfo, $api_name)");

		$url = "http://218.145.66.136/UNSE_DATA/api/$api_name.asp";

		$year = date('Y',time());
		$end_year = $year + 34;
		$i = 0;
		while ($year <= $end_year) {
			$userinfo['yyyy'] = $year;
			log_message('debug','## yyyy='.$userinfo['yyyy']);
			$req = new HttpRequest($url, HttpRequest::METH_POST);
			$req->addPostFields($userinfo);
			try {
				$contents[$i] = json_decode($req->send()->getBody(), TRUE);
				$this->logsql->log_result($contents[$i]);
			} catch (HttpException $ex) {
				log_message('error','## 운세데이터를 가져오는 중 에러 발생');
				echo $ex;
			}
			$i++;
			$year++;
		}

		$this->request_params = '';
		foreach ($userinfo as $key => $value) {
			$this->request_params .= $key.'='.$value.'&';
			if ($key == 'page') {
				break;
			}
		}
		log_message('debug','## 운세 데이터 요청 URL : '.$url.'?'.$this->request_params);
		
		return $contents;
	}
}

/* End of file money_model.php */
/* Location: ./application/models/unse/money_model.php */